package com.work.yshop.ui.activity;

import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.work.yshop.R;
import com.work.yshop.model.Product;
import com.work.yshop.utils.ImageLoader;
import com.work.yshop.utils.UserSession;

/**
 * 添加/编辑商品Activity
 */
public class ProductAddActivity extends AppCompatActivity {

    private EditText etProductName;
    private EditText etProductDesc;
    private EditText etProductPrice;
    private EditText etProductInventory;
    private ImageView ivProductImage;
    private Button btnSubmit;
    private UserSession userSession;
    
    private Product existingProduct;
    private boolean isEditMode = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_product_add);

        // 初始化用户会话
        userSession = UserSession.getInstance();

        // 检查是否是编辑模式
        Intent intent = getIntent();
        if (intent != null && intent.hasExtra("product")) {
            existingProduct = (Product) intent.getSerializableExtra("product");
            isEditMode = intent.getBooleanExtra("is_edit", false);
        }

        // 初始化视图
        initViews();

        // 设置工具栏
        setupToolbar();

        // 如果是编辑模式，填充现有商品数据
        if (isEditMode && existingProduct != null) {
            fillProductData();
        }

        // 设置点击事件
        setupClickListeners();
    }

    private void initViews() {
        etProductName = findViewById(R.id.et_product_name);
        etProductDesc = findViewById(R.id.et_product_desc);
        etProductPrice = findViewById(R.id.et_product_price);
        etProductInventory = findViewById(R.id.et_product_inventory);
        ivProductImage = findViewById(R.id.iv_product_image);
        btnSubmit = findViewById(R.id.btn_submit);
        
        // 设置按钮文本
        if (isEditMode) {
            btnSubmit.setText("保存修改");
        } else {
            btnSubmit.setText("提交");
        }
    }

    private void setupToolbar() {
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        
        // 设置标题
        if (isEditMode) {
            getSupportActionBar().setTitle("编辑商品");
        } else {
            getSupportActionBar().setTitle("添加商品");
        }
    }
    
    private void fillProductData() {
        // 填充商品数据到表单
        etProductName.setText(existingProduct.getName());
        etProductDesc.setText(existingProduct.getDescription());
        etProductPrice.setText(String.valueOf(existingProduct.getPrice()));
        etProductInventory.setText(String.valueOf(existingProduct.getStock()));
        
        // 加载商品图片
        if (existingProduct.getImageUrl() != null && !existingProduct.getImageUrl().isEmpty()) {
            ImageLoader.loadImage(this, existingProduct.getImageUrl(), ivProductImage);
        }
    }

    private void setupClickListeners() {
        // 图片选择点击事件
        ivProductImage.setOnClickListener(v -> {
            // 选择图片逻辑
            Toast.makeText(ProductAddActivity.this, "选择商品图片", Toast.LENGTH_SHORT).show();
            // 这里应该打开图片选择器
        });

        // 提交按钮点击事件
        btnSubmit.setOnClickListener(v -> {
            validateAndSubmitProduct();
        });
    }

    // 验证输入并提交商品
    private void validateAndSubmitProduct() {
        String name = etProductName.getText().toString().trim();
        String description = etProductDesc.getText().toString().trim();
        String priceStr = etProductPrice.getText().toString().trim();
        String inventoryStr = etProductInventory.getText().toString().trim();

        // 验证名称
        if (name.isEmpty()) {
            Toast.makeText(this, "请输入商品名称", Toast.LENGTH_SHORT).show();
            return;
        }

        // 验证描述
        if (description.isEmpty()) {
            Toast.makeText(this, "请输入商品描述", Toast.LENGTH_SHORT).show();
            return;
        }

        // 验证价格
        if (priceStr.isEmpty()) {
            Toast.makeText(this, "请输入商品价格", Toast.LENGTH_SHORT).show();
            return;
        }

        // 验证库存
        if (inventoryStr.isEmpty()) {
            Toast.makeText(this, "请输入商品库存", Toast.LENGTH_SHORT).show();
            return;
        }

        try {
            double price = Double.parseDouble(priceStr);
            int inventory = Integer.parseInt(inventoryStr);

            // 创建或更新商品对象
            Product product;
            if (isEditMode && existingProduct != null) {
                // 更新现有商品
                product = existingProduct;
                product.setName(name);
                product.setDescription(description);
                product.setPrice(price);
                product.setInventory(inventory);
                // 图片URL在选择图片后更新
            } else {
                // 创建新商品
                product = new Product();
                product.setName(name);
                product.setDescription(description);
                product.setPrice(price);
                product.setInventory(inventory);
                product.setSellerId(userSession.getUserId());
                product.setStatus(1); // 默认上架
                // 图片URL在选择图片后设置
            }

            // 保存商品
            saveProduct(product);

        } catch (NumberFormatException e) {
            Toast.makeText(this, "请输入有效的价格和库存数量", Toast.LENGTH_SHORT).show();
        }
    }

    // 保存商品到数据库
    private void saveProduct(Product product) {
        // 这里实现保存商品的逻辑
        // 可能需要调用API或本地数据库操作
        
        String message = isEditMode ? "商品修改成功" : "商品添加成功";
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
        finish();
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            onBackPressed();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}